package com.xyy.saas.payment.cores.api;

import com.xyy.saas.payment.cores.bo.AccountModifyBo;
import com.xyy.saas.payment.cores.bo.jd.*;
import com.xyy.saas.payment.cores.param.*;
import com.xyy.saas.payment.cores.vo.AccountUpdateVo;
import com.xyy.saas.payment.cores.vo.MerchantAccountVO;
import com.xyy.saas.payment.cores.vo.OpenAccountVO;
import com.xyy.saas.payment.cores.vo.ResultVO;
import com.xyy.saas.payment.cores.vo.jd.*;

import java.util.List;

public interface PaymentOpenAccountApi {
    void testKFEJZB6274(String param);

    /**
     * 更新平安商户信息
     */
    void updateAccount(AccountUpdateVo accountUpdateVo);

    /**
     * 聚合支付开户
     * 1.聚合支付开户
     * 2.聚合支付报件
     */
    ResultVO<OpenAccountVO> create(MerchantAccountVO merchantAccountVO, String sign);

    /**
     * 根据业务Id 查询平台的账号id
     * @param queryParam
     * @return
     */
    ResultVO<OpenAccountVO> queryByBusinessId(OpenAccountQueryParam queryParam, String sign);

    /**
     * 修改企业账户信息
     */
    @Deprecated
    ResultVO<AccountModifyBo> modifyMerchant(MerchantAccountModifyParam param, String sign);

    /**
     * 修改个人账户信息
     */
    @Deprecated
    ResultVO<AccountModifyBo> modifyPersonal(PersonalAccountModifyParam param, String sign);

    /**
     * 查询企业账户信息
     */
    @Deprecated
    ResultVO<MerchantAccountModifyParam> queryModifyMerchant(QueryAccountModifyParam param, String sign);

    /**
     * 查询企业账户信息
     */
    @Deprecated
    ResultVO<List<MerchantAccountModifyParam>> queryModifyMerchantList(QueryAccountModifyParam param, String sign);

    /**
     * 打款认证
     */
    ResultVO paymentAuth(PaymentAuthParam param);

    /**
     * 查询账户信息
     */
    ResultVO<AccountInfoVo> queryAccountInfo(AccountInfoParam param);
    /**
     * 查询在平安开户状态
     */
    ResultVO<AccountInfoVo> queryPingAnActStatus(AccountInfoParam param);
    /**
     * 实名开同名账户关联关系维护
     */
    ResultVO mntMbrBindSameRealCustNameAcct(String thirdUserId,String sellerThirdUserId);

    /**
     * 京东一键签约 - 查询一键签约列表
     */
    ResultVO<List<JDBankDto>> queryOneKeySignBanks(JDQueryOneKeySignBanksVo jdQueryOneKeySignBanksVo);

    /**
     * 京东一键签约 - 一键签约申请
     */
    ResultVO<JDOneKeySignApplyDto> oneKeySignApply(JDOneKeySignApplyVo jdOneKeySignApplyVo);

    /**
     * 京东一键签约 - 签约结果查询
     */
    ResultVO<JDBankCardBindDto> queryOneKeySignResult(JDQueryOneKeySignResultVo jdQueryOneKeySignResultVo);

    /**
     * 京东 - 渠道卡信息查询：若存在绑卡中、已绑卡，则返回异常信息，否则返回卡信息
     */
    ResultVO<JDCardBinDataDto> cardbin(JDCardBinRequestVo jdCardBinRequestVo);

    /**
     * 京东 - 协议签约接口
     */
    ResultVO<JDContractSignDto> contractSign(JDContractSignVo jdContractSignVo);

    /**
     * 京东 - 协议确认接口 ：使用绑卡中key
     */
    ResultVO<JDBankCardBindDto> contractSignConfirm(JDContractSignConfirmVo jdContractSignConfirmVo);

    /**
     * 京东 - 协议解约接口
     */
    ResultVO<JDBankCardBindDto> cancelContract(JDCancelContractVo jdCancelContractVo);

    /**
     * 京东 - 查询客户绑卡列表
     */
    ResultVO<List<JDBankCardBindDto>> bindCardList(JDBankCardBindVo jdBankCardBindVo);

    /**
     * 清除用户绑卡数据
     */
    ResultVO clearBindCards(String merchantNo, String bindAccount);
    /**
     * 批量清除用户绑卡数据
     */
    ResultVO clearBindCards(JDBankCardBindVo param);
}
